<?php

namespace Gds\AchatBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use JMS\SecurityExtraBundle\Annotation\Secure;
use Gds\AchatBundle\Entity\ReglementFournisseur;
use Gds\AchatBundle\Form\ReglementFournisseurType;
use Symfony\Component\HttpFoundation\Response;
use Gds\AchatBundle\Entity\CompteBancaire;
use Gds\AchatBundle\Entity\LigneReglementFournisseur;

class ReglementController extends Controller {

    public function deleteAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $id = $request->get('id');
        $reglement = $em->getRepository('GdsAchatBundle:ReglementFournisseur')->find($id);
        $lignesReglement = $reglement->getLignes();
        foreach ($lignesReglement as $l) {
                if ($l->getFacture()) {
                    $facture = $l->getFacture();
                    $montant = $l->getMontant();
                    $facture->setReste($facture->getReste() + $montant);
                    $em->persist($facture);
                    $k = 0;
                    $bonsLivraison = $facture->getBonLivraisons();
                    while ($montant > 0 && $k < count($bonsLivraison)) {
                        $bonLivraison = $bonsLivraison[$k];
                        $ecart = $bonLivraison->getMontantTtc() - $bonLivraison->getReste();
                        if ($ecart >= $montant) {
                            $bonLivraison->setReste($bonLivraison->getReste() + $montant);
                            $montant = 0;
                        } else {
                            $bonLivraison->setReste($bonLivraison->getMontantTtc());
                            $montant = $montant - $ecart;
                        }
                        $em->persist($bonLivraison);
                        $k++;
                    }
                    $em->remove($l);
                }
                if ($l->getBonLivraison()) {
                    $montant = $l->getMontant();
                    $bonLivraison = $l->getBonLivraison();
                    $bonLivraison->setReste($bonLivraison->getReste() + $montant);
                    $em->persist($bonLivraison);
                    $em->remove($l);
                }
            }
            $em->flush();
            $em->remove($reglement);
            $em->flush();
            $response = new Response(json_encode(array('success' => true)));
            $response->headers->set('Content-Type', 'application/json');
            return $response;
    }

    public function editAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $id = $request->get('id');
        $reglement = $em->getRepository('GdsAchatBundle:ReglementFournisseur')->find($id);
        $lignesReglement = $reglement->getLignes();
        if ($request->isMethod('post')) {
            $lignes_string = $request->get('lignes');
            $lignes_json = json_decode($lignes_string);
            $lignes = $lignes_json->lignes;
            $factureIds = array();
            $bonLivraisonIds = array();
            foreach ($lignes as $ligne) {
                foreach ($ligne->factures as $id) {
                    $factureIds[] = $id;
                }
                foreach ($ligne->bonsLivraison as $id) {
                    $bonLivraisonIds[] = $id;
                }
            }
            foreach ($lignesReglement as $l) {
                if ($l->getFacture()) {
                    $facture = $l->getFacture();
                    $montant = $l->getMontant();
                    $facture->setReste($facture->getReste() + $montant);
                    $em->persist($facture);
                    $k = 0;
                    $bonsLivraison = $facture->getBonLivraisons();
                    while ($montant > 0 && $k < count($bonsLivraison)) {
                        $bonLivraison = $bonsLivraison[$k];
                        $ecart = $bonLivraison->getMontantTtc() - $bonLivraison->getReste();
                        if ($ecart >= $montant) {
                            $bonLivraison->setReste($bonLivraison->getReste() + $montant);
                            $montant = 0;
                        } else {
                            $bonLivraison->setReste($bonLivraison->getMontantTtc());
                            $montant = $montant - $ecart;
                        }
                        $em->persist($bonLivraison);
                        $k++;
                    }
                    $em->remove($l);
                }
                if ($l->getBonLivraison()) {
                    $montant = $l->getMontant();
                    $bonLivraison = $l->getBonLivraison();
                    $bonLivraison->setReste($bonLivraison->getReste() + $montant);
                    $em->persist($bonLivraison);
                    $em->remove($l);
                }
            }
            $em->flush();
            if (count($factureIds) > 0)
                $factures = $em->getRepository('GdsAchatBundle:FactureFournisseur')->findByIdIn($factureIds);
            else {
                $factures=array();
            }
            if (count($bonLivraisonIds) > 0)
                $bonLivraisons = $em->getRepository('GdsAchatBundle:BonLivraisonFournisseur')->findByIdIn($bonLivraisonIds);
            else {
                $bonLivraisons=array();
            }
            $k = 0;
            $j = 0;
            $montant_ttc = 0;
            while ($k < count($factures) && $j < count($lignes)) {
                $ligne = new LigneReglementFournisseur();
                $ligne->setFacture($factures[$k]);
                $ligne->setType($lignes[$j]->type);
                if ($ligne->getType() != 'Espece') {
                    $tab = date_parse_from_format('d/m/Y', $lignes[$j]->date_echeance);
                    $ligne->setDateEcheance(new \DateTime(date('Y-m-d', mktime(0, 0, 0, $tab['month'], $tab['day'], $tab['year']))));
                    $ligne->setCompteBancaire($em->getRepository('GdsAchatBundle:CompteBancaire')->find($lignes[$j]->compte_bancaire));
                    $ligne->setNumeroPiece($lignes[$j]->numero_piece);
                }

                if ($lignes[$j]->montant > $factures[$k]->getReste()) {
                    $ligne->setMontant($factures[$k]->getReste());
                    $this->reglerBonsLivraisonByFacture($em, $factures[$k], $ligne->getMontant());
                    $lignes[$j]->montant = $lignes[$j]->montant - $factures[$k]->getReste();
                    $factures[$k]->setReste(0);
                    $em->persist($factures[$k]);
                    $k++;
                } else {

                    if ($lignes[$j]->montant == $factures[$k]->getReste()) {
                        $lignes[$j]->montant = 0;
                        $ligne->setMontant($factures[$k]->getRest());
                        $this->reglerBonsLivraisonByFacture($em, $factures[$k], $ligne->getMontant());
                        $factures[$k]->setReste(0);

                        $k++;
                        $j++;
                    } else {

                        $ligne->setMontant($lignes[$j]->montant);
                        $this->reglerBonsLivraisonByFacture($em, $factures[$k], $ligne->getMontant());
                        $factures[$k]->setReste($factures[$k]->getReste() - $lignes[$j]->montant);
                        $j++;
                    }
                }
                $montant_ttc = $montant_ttc + $ligne->getMontant();
                $reglement->addLigne($ligne);
            }

            $k = 0;

            while ($k < count($bonLivraisons) && $j < count($lignes)) {

                $ligne = new LigneReglementFournisseur();
                $ligne->setBonLivraison($bonLivraisons[$k]);
                $ligne->setType($lignes[$j]->type);
                if ($ligne->getType() != 'Espece') {
                    $tab = date_parse_from_format('d/m/Y', $lignes[$j]->date_echeance);
                    $ligne->setDateEcheance(new \DateTime(date('Y-m-d', mktime(0, 0, 0, $tab['month'], $tab['day'], $tab['year']))));
                    $ligne->setCompteBancaire($em->getRepository('GdsAchatBundle:CompteBancaire')->find($lignes[$j]->compte_bancaire));
                    $ligne->setNumeroPiece($lignes[$j]->numero_piece);
                }
                if ($lignes[$j]->montant > $bonLivraisons[$k]->getReste()) {
                    $ligne->setMontant($bonLivraisons[$k]->getReste());
                    $lignes[$j]->montant = $lignes[$j]->montant - $bonLivraisons[$k]->getReste();
                    $bonLivraisons[$k]->setReste(0);
                    $em->persist($bonLivraisons[$k]);
                    $k++;
                } else {
                    if ($lignes[$j]->montant == $bonLivraisons[$k]->getReste()) {
                        $lignes[$j]->montant = 0;
                        $ligne->setMontant($bonLivraisons[$k]->getReste());
                        $bonLivraisons[$k]->setReste(0);

                        $k++;
                        $j++;
                    } else {
                        $ligne->setMontant($lignes[$j]->montant);
                        $bonLivraisons[$k]->setReste($bonLivraisons[$k]->getReste() - $lignes[$j]->montant);
                        $j++;
                    }
                }
                $montant_ttc = $montant_ttc + $ligne->getMontant();
                $reglement->addLigne($ligne);
            }
            $reglement->setMontantTtc($montant_ttc);
            $em->persist($reglement);
            $em->flush();
            $response = new Response(json_encode(array('success' => true)));
            $response->headers->set('Content-Type', 'application/json');
            return $response;
        }
        $lignes = array();
        foreach ($lignesReglement as $k => $ligne) {
            if (count($lignes) == 0) {
                $lignes[0]['ids'] = array();
                $lignes[0]['factures'] = array();
                $lignes[0]['bonsLivraison'] = array();
                if ($ligne->getFacture())
                    $lignes[0]['factures'][] = $ligne->getFacture()->getId();
                if ($ligne->getBonLivraison())
                    $lignes[0]['bonsLivraison'][] = $ligne->getBonLivraison()->getId();
                $lignes[0]['ids'][0] = $ligne->getId();
                $lignes[0]['type'] = $ligne->getType();
                $lignes[0]['montant'] = $ligne->getMontant();
                $lignes[0]['date_echeance'] = $ligne->getDateEcheance();
                $lignes[0]['numero_piece'] = $ligne->getNumeroPiece();
                $lignes[0]['compte_bancaire'] = $ligne->getCompteBancaire();
                $lignes[0]['etat'] = $ligne->getEtat();
            } else {
                $test = true;
                foreach ($lignes as $j => $l) {
                    if ($l['numero_piece'] == $ligne->getNumeroPiece()) {
                        $lignes[$j]['ids'][count($lignes[$j]['ids'])] = $ligne->getId();
                        $lignes[$j]['montant'] = $lignes[$j]['montant'] + $ligne->getMontant();
                        if ($ligne->getFacture())
                            $lignes[$j]['factures'][] = $ligne->getFacture()->getId();
                        if ($ligne->getBonLivraison())
                            $lignes[$j]['bonsLivraison'][] = $ligne->getBonLivraison()->getId();
                        $test = false;
                    }
                }
                if ($test) {
                    $count = count($lignes);
                    $lignes[$count]['ids'] = array();
                    $lignes[$count]['factures'] = array();
                    $lignes[$count]['bonsLivraison'] = array();
                    $lignes[$count]['ids'][0] = $ligne->getId();
                    if ($ligne->getFacture())
                        $lignes[$count]['factures'][] = $ligne->getFacture()->getId();
                    if ($ligne->getBonLivraison())
                        $lignes[$count]['bonsLivraison'][] = $ligne->getBonLivraison()->getId();
                    $lignes[$count]['type'] = $ligne->getType();
                    $lignes[$count]['montant'] = $ligne->getMontant();
                    $lignes[$count]['date_echeance'] = $ligne->getDateEcheance();
                    $lignes[$count]['numero_piece'] = $ligne->getNumeroPiece();
                    $lignes[$count]['compte_bancaire'] = $ligne->getCompteBancaire();
                    $lignes[$count]['etat'] = $ligne->getEtat();
                }
            }
        }
        return $this->render('GdsAchatBundle:Reglement:reglement_edit.html.twig', array('reglement' => $reglement, 'lignes' => $lignes));
    }

    public function showAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $id = $request->get('id');
        $reglement = $em->getRepository('GdsAchatBundle:ReglementFournisseur')->find($id);
        $lignes = array();
        foreach ($reglement->getLignes() as $k => $ligne) {
            if (count($lignes) == 0) {
                $lignes[0]['paiements'] = array();
                $lignes[0]['documents'] = array();
                $lignes[0]['paiements'][0] = array();
                $lignes[0]['paiements'][0]['type'] = $ligne->getType();
                $lignes[0]['paiements'][0]['montant'] = $ligne->getmontant();
                $lignes[0]['paiements'][0]['date_echeance'] = $ligne->getDateEcheance();
                $lignes[0]['paiements'][0]['numero_piece'] = $ligne->getNumeroPiece();
                $lignes[0]['paiements'][0]['compte_bancaire'] = $ligne->getCompteBancaire();
                $lignes[0]['paiements'][0]['etat'] = $ligne->getEtat();
                if ($ligne->getFacture())
                    $lignes[0]['documents'][0] = "Facture :" . $ligne->getFacture();
                if ($ligne->getBonLivraison())
                    $lignes[0]['documents'][0] = "Bon Livraison :" . $ligne->getBonLivraison();
            }else {
                foreach ($lignes as $k => $l) {
                    $doc = '';
                    if ($ligne->getFacture())
                        $doc = "Facture :" . $ligne->getFacture();
                    if ($ligne->getBonLivraison())
                        $doc = "Bon Livraison :" . $ligne->getBonLivraison();

                    foreach ($l['documents'] as $j => $d) {
                        if ($d == $doc) {
                            $u = count($lignes[$k]['paiements']);
                            $lignes[$k]['paiements'][$u] = array();
                            $lignes[$k]['paiements'][$u]['type'] = $ligne->getType();
                            $lignes[$k]['paiements'][$u]['montant'] = $ligne->getmontant();
                            $lignes[$k]['paiements'][$u]['date_echeance'] = $ligne->getDateEcheance();
                            $lignes[$k]['paiements'][$u]['numero_piece'] = $ligne->getNumeroPiece();
                            $lignes[$k]['paiements'][$u]['compte_bancaire'] = $ligne->getCompteBancaire();
                            $lignes[$k]['paiements'][$u]['etat'] = $ligne->getEtat();
                            break;
                        }
                    }
                    foreach ($l['paiements'] as $i => $d) {
                        if ($d['type'] == $ligne->getType()) {
                            if ($d['numero_piece'] == $ligne->getNumeroPiece()) {
                                $lignes[$k]['documents'][count($lignes[$k]['documents'])] = $doc;
                            }
                        }
                    }
                }
            }
        }
        return $this->render('GdsAchatBundle:Reglement:reglement_show.html.twig', array('reglement' => $reglement, 'lignes' => $lignes));
    }

    public function getReferenceBonLivraisonAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $ref = $request->get('ref');
        $bonsLivraison = $em->getRepository('GdsAchatBundle:BonLivraisonFournisseur')->findBy(array('reference' => '%' . $ref . '%'));
        $result = array();
        foreach ($bonsLivraison as $k => $bonLivraison) {
            $result[$k]['reference'] = $bonLivraison->getReference();
        }
        return json_encode($result);
    }

    public function getReferenceFactureAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $ref = $request->get('ref');
        $factures = $em->getRepository('GdsAchatBundle:FactureFournisseur')->findBy(array('reference' => '%' . $ref . '%'));
        foreach ($factures as $k => $facture) {
            $result[$k]['reference'] = $facture->getReference();
        }
        return json_encode($result);
    }

    public function indexAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $societe = $em->getRepository('GdsArticleBundle:Societe')->findAll()[0];
        $ref = $societe->getPrefixeReglementFournisseur();
        $ref_num = $societe->getNumeroReglementFournisseur();
        $reglement = new ReglementFournisseur();
        $reglement->setReference($ref . ' ' . $ref_num);
        $form = $this->createForm(new ReglementFournisseurType(), $reglement);
        if ($request->isMethod('post')) {
            $heure = $request->get('heure');
            $form->bind($request);
            $reglement = $form->getData();
            $reglement->setHeure($heure);
            $paiements = json_decode($request->get('paiements'));
            $paiements = $paiements->paiements;
            $factureIds = json_decode($request->get('factures'));
            $bonLivraisonIds = json_decode($request->get('bonLivraisons'));
            if (count($factureIds) > 0)
                $factures = $em->getRepository('GdsAchatBundle:FactureFournisseur')->findByIdIn($factureIds);
            else
                $factures = array();
            if (count($bonLivraisonIds) > 0)
                $bonLivraisons = $em->getRepository('GdsAchatBundle:BonLivraisonFournisseur')->findByIdIn($bonLivraisonIds);
            else
                $bonLivraisons = array();
            $k = 0;
            $j = 0;
            $montant_ttc = 0;


            while ($k < count($factures) && $j < count($paiements)) {
                $ligne = new LigneReglementFournisseur();
                $ligne->setFacture($factures[$k]);
                $ligne->setType($paiements[$j]->type);
                if ($ligne->getType() != 'Espece') {
                    $tab = date_parse_from_format('d/m/Y', $paiements[$j]->date);
                    $ligne->setDateEcheance(new \DateTime(date('Y-m-d', mktime(0, 0, 0, $tab['month'], $tab['day'], $tab['year']))));
                    $ligne->setCompteBancaire($em->getRepository('GdsAchatBundle:CompteBancaire')->find($paiements[$j]->compte));
                    $ligne->setNumeroPiece($paiements[$j]->numero);
                }

                if ($paiements[$j]->montant > $factures[$k]->getReste()) {
                    $ligne->setMontant($factures[$k]->getReste());
                    $this->reglerBonsLivraisonByFacture($em, $factures[$k], $ligne->getMontant());
                    $paiements[$j]->montant = $paiements[$j]->montant - $factures[$k]->getReste();
                    $factures[$k]->setReste(0);
                    $em->persist($factures[$k]);
                    $k++;
                } else {

                    if ($paiements[$j]->montant == $factures[$k]->getReste()) {
                        $paiements[$j]->montant = 0;
                        $ligne->setMontant($factures[$k]->getRest());
                        $this->reglerBonsLivraisonByFacture($em, $factures[$k], $ligne->getMontant());
                        $factures[$k]->setReste(0);

                        $k++;
                        $j++;
                    } else {

                        $ligne->setMontant($paiements[$j]->montant);
                        $this->reglerBonsLivraisonByFacture($em, $factures[$k], $ligne->getMontant());
                        $factures[$k]->setReste($factures[$k]->getReste() - $paiements[$j]->montant);
                        $j++;
                    }
                }
                $montant_ttc = $montant_ttc + $ligne->getMontant();
                $reglement->addLigne($ligne);
            }

            $k = 0;

            while ($k < count($bonLivraisons) && $j < count($paiements)) {

                $ligne = new LigneReglementFournisseur();
                $ligne->setBonLivraison($bonLivraisons[$k]);
                $ligne->setType($paiements[$j]->type);
                if ($ligne->getType() != 'Espece') {
                    $tab = date_parse_from_format('d/m/Y', $paiements[$j]->date);
                    $ligne->setDateEcheance(new \DateTime(date('Y-m-d', mktime(0, 0, 0, $tab['month'], $tab['day'], $tab['year']))));
                    $ligne->setCompteBancaire($em->getRepository('GdsAchatBundle:CompteBancaire')->find($paiements[$j]->compte));
                    $ligne->setNumeroPiece($paiements[$j]->numero);
                }
                if ($paiements[$j]->montant > $bonLivraisons[$k]->getReste()) {
                    $ligne->setMontant($bonLivraisons[$k]->getReste());
                    $paiements[$j]->montant = $paiements[$j]->montant - $bonLivraisons[$k]->getReste();
                    $bonLivraisons[$k]->setReste(0);
                    $em->persist($bonLivraisons[$k]);
                    $k++;
                } else {
                    if ($paiements[$j]->montant == $bonLivraisons[$k]->getReste()) {
                        $paiements[$j]->montant = 0;
                        $ligne->setMontant($bonLivraisons[$k]->getReste());
                        $bonLivraisons[$k]->setReste(0);

                        $k++;
                        $j++;
                    } else {
                        $ligne->setMontant($paiements[$j]->montant);
                        $bonLivraisons[$k]->setReste($bonLivraisons[$k]->getReste() - $paiements[$j]->montant);
                        $j++;
                    }
                }
                $montant_ttc = $montant_ttc + $ligne->getMontant();
                $reglement->addLigne($ligne);
            }
            $ref = $societe->getPrefixeReglementFournisseur();
            $ref_num = $societe->getNumeroReglementFournisseur();
            $societe->setNumeroReglementFournisseur($societe->getNumeroReglementFournisseur() + 1);
            $reglement->setReference($ref . ' ' . $ref_num);
            $reglement->setMontantTtc($montant_ttc);
            $reglement->setIsCloturer(false);
            $reglement->setIsSupprimer(false);
            $reglement->setUser($this->getUser());
            $em->persist($societe);
            $em->persist($reglement);
            $em->flush();
            $response = new Response(json_encode(array('success' => true)));
            $response->headers->set('Content-Type', 'application/json');
            return $response;
        }
        return $this->render('GdsAchatBundle:Reglement:index.html.twig', array('form' => $form->createView()));
    }

    private function reglerBonsLivraisonByFacture($em, $facture, $montant) {
        $bonsLivraison = $em->getRepository('GdsAchatBundle:BonLivraisonFournisseur')->getBonLivraisonNonReglerParFacture($facture->getId());
        $k = 0;
        while ($montant > 0 && $k < count($bonsLivraison)) {
            if ($bonsLivraison[$k]->getReste() > $montant) {
                $bonsLivraison[$k]->setReste($bonsLivraison[$k]->getReste() - $montant);
                $montant = 0;
                $em->persist($bonsLivraison[$k]);
            } else {
                $montant = $montant - $bonsLivraison[$k]->getReste();
                $bonsLivraison[$k]->setReste(0);
                $em->persist($bonsLivraison[$k]);
                $k++;
            }
        }
        $em->flush();
    }

    public function getDocumentAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $id = $request->get('id');
        $factures = $em->getRepository('GdsAchatBundle:FactureFournisseur')->getFactureNonReglerParFournisseur($id);
        $bonsLivraison = $em->getRepository('GdsAchatBundle:BonLivraisonFournisseur')->getBonLivraisonNonReglerParFournisseur($id);
        $vewfacture = $this->renderView('GdsAchatBundle:Reglement:list_facture_non_regler.html.twig', array('factures' => $factures));
        $vewbonlivraison = $this->renderView('GdsAchatBundle:Reglement:list_bon_livraison_non_regler.html.twig', array('bonsLivraison' => $bonsLivraison));
        $result = array();
        $result['facture'] = $vewfacture;
        $result['bonLivraison'] = $vewbonlivraison;
        return new Response(json_encode($result));
    }

    public function paiementAction() {
        $request = $this->getRequest();
        $id = $request->get('fournisseur_id');
        $em = $this->getDoctrine()->getEntityManager();
        $fournisseur = $em->getRepository('GdsAchatBundle:Fournisseur')->find($id);
        return $this->render('GdsAchatBundle:Reglement:paiement.html.twig', array('fournisseur' => $fournisseur));
    }

    public function ajaxAddCompteAction() {
        $request = $this->getRequest();
        $em = $this->getDoctrine()->getEntityManager();
        $rib = $request->get('rib');
        $banque = $request->get('banque');
        $fournisseur = $em->getRepository('GdsAchatBundle:Fournisseur')->find($request->get('fournisseur_id'));
        $compte = new CompteBancaire();
        $compte->setBanque($banque);
        $compte->setRib($rib);
        $compte->setFournisseur($fournisseur);
        $em->persist($compte);
        $em->flush();
        $comptes = $em->getRepository('GdsAchatBundle:CompteBancaire')->findBy(array('fournisseur' => $fournisseur));
        $view = $this->renderView('GdsAchatBundle:Reglement:listCompteBancaire.html.twig', array('comptes' => $comptes));
        $result['view'] = $view;
        $result['compte_id'] = $compte->getId();
        return new Response(json_encode($result));
    }

    public function listeAction() {
        $em = $this->getDoctrine()->getEntityManager();
        $request = $this->getRequest();
        $num = $request->get('numero');
        $fournisseur = $request->get('fournisseur');
        $date1 = $request->get('date1');
        $date2 = $request->get('date2');
        $heure1 = $request->get('heure1');
        $heure2 = $request->get('heure2');
        $refB = $request->get('ref_b');
        $refF = $request->get('ref_f');
        $ttc1 = $request->get('ttc1');
        $ttc2 = $request->get('ttc2');
        $departement = $request->get('departement');
        $user = $this->getUser();
        if (!$request->get('type') && !$request->get('retour'))
            $departement = $user->getDepartement()->getId();
        $query = $em->getRepository('GdsAchatBundle:ReglementFournisseur')->getResult($num, $fournisseur, $date1, $date2, $heure1, $heure2, $refF, $refB, $ttc1, $ttc2, $departement);
        $paginator = $this->get('knp_paginator');
        $pagination = $paginator->paginate(
                $query, $request->get('page', 1)/* page number */, 10/* limit per page */
        );
        if ($request->get('type')) {
            return $this->render('GdsAchatBundle:Reglement:page_liste_reglement.html.twig', array('pagination' => $pagination, 'departement' => $departement));
        }
        if ($request->get('retour') != "")
            return $this->render('GdsAchatBundle:Reglement:liste_reglement.html.twig', array('pagination' => $pagination, 'departement' => $departement));
        return $this->render('GdsAchatBundle:Reglement:all_reglement.html.twig', array('pagination' => $pagination, 'departement' => $user->getDepartement()->getId()));
    }

}
